


// 第一个形参：1-解决作用域查找问题，2-可以压缩体积
// 第二个形参：避免ie678出现undefined



;(function (window, undefined) {
    function init(el) {
        // this 全等于实例化对象
        // 1、获取所有数据
        let els = document.querySelector(el)
        // 2、遍历数据，将js dom绑定到jq对象上
        for (let i = 0; i < els.length; i++) {
            // i 索引
            // els[i] 获取js标签对象
            this[i] = els[i]
        }
        this.length = els.length
        // 上述代码优化：
        // let arr = []
        // arr.push.apply(this,els)
    }
    // 正常：1000个 window*6 = 6000个字符
    // 压缩：window形参改成一个字符
    let jQuery = function (el) {
        return new init(el)
    }

    // 给iq增加一个快捷操作  也就是静态方法 改静态方法可以给init添加原型方法
    jQuery.extend = function (object) {
        // object = {方法名（）{ } ,...}
        for (let key in object) {
            // key就是方法名
            // init.prototype.key = object.key
            init.prototype[key] = object[key]
        }
    }

    init.prototype = {
        css(cssAttr, cssVal) {
            for (let i = 0; i < this.length; i++) {
                this[i].style[cssAttr] = cssVal
                // 当对象的键是变量时 用数组语法
            }
            return this
        },
        ajax(options) { },
        attr(options) { },
        addClass(options) { },
    }

    window.jQuery = window.$ = jQuery
})(window)






